package br.com.ericogr.hanoi.iu;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import br.com.ericogr.hanoi.R;
import br.com.ericogr.hanoi.database.dao.PontuacaoDao;
import br.com.ericogr.hanoi.database.dao.PontuacaoDaoImpl;

public class AtividadeRecorde extends ListActivity implements OnItemClickListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        inicializarComponentes();
    }

    private void inicializarComponentes() {
        setListAdapter(getAdapter());
        
        getListView().setOnItemClickListener(this);
    }

    private ListAdapter getAdapter() {
        String[] campos = {
                "pratos",
                "movimentos", 
                "tempo", 
                "data"};
        int[] componentes = {
                R.id.lista_recordes_TextViewQuantidadeDePratos,
                R.id.lista_recordes_TextViewMovimentos,
                R.id.lista_recordes_TextViewTempo,
                R.id.lista_recordes_TextViewData};
        
        PontuacaoDao pdao = new PontuacaoDaoImpl(this);
        List<Map<String, Object>> pontuacoes = pdao.getMapaTodasAsPontuacoes();
        
        BaseAdapter arr = new RecordeCursorAdapter(this, pontuacoes, R.layout.lista_recordes, campos, componentes);

        return arr;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    }
    
    class RecordeCursorAdapter extends SimpleAdapter {
        public RecordeCursorAdapter(Context context, List<Map<String, Object>> valores, int layout, String[] campos, int[] ids) {
            super(context, valores, layout, campos, ids);
        }
        
        @Override
        public void setViewText(TextView v, String text) {
            if (v.getId() == R.id.lista_recordes_TextViewData) {
                long val = Long.parseLong(text);
                Date data = new Date(val);
                
                v.setText(SimpleDateFormat.getDateInstance(SimpleDateFormat.LONG).format(data));
            }
            else if (v.getId() == R.id.lista_recordes_TextViewTempo) {
                int tempo = Integer.parseInt(text);
                int minutos = tempo / 60;
                int segundos = tempo % 60;
                
                v.setText(new DecimalFormat("00").format(minutos) + ":" + new DecimalFormat("00").format(segundos));
            }
            else {
                super.setViewText(v, text);
            }
        }
    }
}
